class Solution {
    public int maxProduct(int[] nums) {
        if(nums.length==1){
            return nums[0];
        }
        int max = 0;
        int zmax = 1;
        int zmin = 1;
        for(int i=0; i<nums.length; i++){
            if(nums[i] < 0){ 
              int tmp = zmax;
              zmax = zmin;
              zmin = tmp;
            }
            zmax = Math.max(zmax*nums[i], nums[i]);
            zmin = Math.min(zmin*nums[i], nums[i]);
            max = Math.max(max, zmax);
        }
        return max;
    }
}